package com.bjpowernode.crm.settings.web.controller;

import com.bjpowernode.crm.common.entity.R;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;


/**
 * 用户模块的控制器
 *      /settings/user
 */
@Controller
@RequestMapping("/settings/user")
public class UserController {

    /**
     * 跳转到登陆页面
     *      以to+页面名称（页面名称首字母大写）
     * @return
     */
    @RequestMapping("/toLogin.do")
    public String toLogin(){
        // 视图解析器
        // 前缀 + 返回值 + 后缀
        // /WEB-INF/jsp + /login + .jsp
        return "/login";
    }

    /**
     * 登录操作
     *      @ResponseBody
     *      @RequestParam 请求参数的注解，name和value属性都代表传递的参数名称，required为是否必须传递
     *          如果为true，没有传递则会报错（HTTP状态 400 - 错误的请求Bad Request，代表传递的参数有问题）
     * @param loginAct
     * @param loginPwd
     * @return
     */
    //@RequestMapping("/login.do")
    @ResponseBody // 将当前控制器的返回值，转换为json字符串数据进行返回
    // 使用Map集合进行返回
    /*public Map<String,Object> login(HttpSession session,
                                    @RequestParam(name="loginAct",required = true) String loginAct,
                                    @RequestParam(name="loginPwd",required = true) String loginPwd){

        // 创建返回值结果集
        Map<String,Object> resultMap = new HashMap<>();

        // 登录操作，就是根据用户名和密码，查询数据库是否有当前的用户
        User user = userService.findUserByLoginActAndLoginPwd(loginAct,loginPwd);

        // 登录失败
        if(user == null){
            // 代表用户名或密码错误，登录失败
            resultMap.put("code",20001);
            resultMap.put("success",false);
            resultMap.put("msg","用户名或密码错误");
            resultMap.put("data",null);
            return resultMap;
        }

        // 登录成功，将用户存入到session中，方便后续进行权限校验，返回resultMap提示信息
        // 登录不需要返回数据
        resultMap.put("code",20000);
        resultMap.put("success",true);
        resultMap.put("msg","登录成功");
        resultMap.put("data",null);

        // 将敏感字段清空，或直接不查询出来，比如loginPwd
        session.setAttribute("user",user);

        return resultMap;
    }*/

    // 使用BaseResult公共的返回值结果集进行返回
    // 没有涉及到data的参数返回，所以不需要指定泛型
    /*public BaseResult login(HttpSession session,
                                    @RequestParam(name="loginAct",required = true) String loginAct,
                                    @RequestParam(name="loginPwd",required = true) String loginPwd){

        // 登录操作，就是根据用户名和密码，查询数据库是否有当前的用户
        User user = userService.findUserByLoginActAndLoginPwd(loginAct,loginPwd);

        // 登录失败
        if(user == null){
            // 代表用户名或密码错误，登录失败
            return new BaseResult().err(20001,"用户名或密码错误");
        }

        // 登录成功，将用户存入到session中，方便后续进行权限校验
        // 登录不需要返回数据

        // 将敏感字段清空，或直接不查询出来，比如loginPwd
        session.setAttribute("user",user);

        return new BaseResult().ok(20000,"登录成功");
    }*/

    // 使用R公共的返回值结果值进行返回
    public R login(HttpSession session,
                   @RequestParam(name="loginAct",required = true) String loginAct,
                   @RequestParam(name="loginPwd",required = true) String loginPwd){
        return null;
    }

}
